#pragma once

#define Logger_ptr std::tr1::shared_ptr<Logger>

using namespace std;

namespace ISAPI_Python {

	namespace Win32Helpers {

		class Logger {
		private:
			Logger(const Logger& logger);
			Logger& operator = (const Logger& otherLogger);
		protected:
			HANDLE EventSourceHandle;

			Logger(const string& logName);
			void LogError(const string& message, WORD type);
		public:
			~Logger() throw();

			static Logger_ptr GetLogger(const string& logName);
			
			void Info(const string& message);
			void Warning(const string& message);
			void Error(const string& message);	
		};
	}
}